<?php
class UnidadMedidasController extends AppController {

	var $name = 'UnidadMedidas';
        var $appModule = 'Maestros';
	var $helpers = array('Html','Form','Ajax','Javascript','Paginator','GetList');
	var $components = array('RequestHandler');
	var $pageTitle = 'ADC corporation';
	var $paginate = array(
            'order' => array('UnidadMedida.id' => 'DESC'));
	
	function index() {
            if (!empty($this->params['url']['limite']))
                $this->limite = $this->params['url']['limite'];

            $q = $this->getBusqueda($this->data['Transportista']['busqueda']);
            $conditions['UnidadMedida.activo']=1;

            if (!empty($q)) {
                $conditions['OR'] = array(
                    'UnidadMedida.codigo SIMILAR TO'=>"%$q%",
                    'UnidadMedida.descripcion SIMILAR TO'=>"%$q%",
                    'UnidadMedida.simbolo SIMILAR TO'=>"%$q%",
                );
            } 
            $this->paginate['limit']=$this->limite;
            $this->paginate['UnidadMedida'] = array(
                'conditions'=>$conditions,
                'order'=>array('codigo')
            );
            $unidadMedidas = $this->paginate('UnidadMedida');
            $this->set('unidadMedidas', $unidadMedidas);
            $this->set('limite', $this->limite);
            $this->data['UnidadMedida']['pagesize']=$this->limite;
	
	}
/* viesta de unidades de medida */	
	function view($id = null) {
            if (!$id) {
                    $this->Session->setFlash(__('Codigo invalido.', true));
                    $this->redirect(array('action'=>'index'));
            }
            $this->set('unidadMedida', $this->UnidadMedida->read(null, $id));
	}

	function add() {
            if (!empty($this->data)) {
                    $this->UnidadMedida->create();
                    if ($this->UnidadMedida->save($this->data)) {
                            $this->Session->setFlash(__('La Unidad de Medida ha sigo guardad correctamente', true));
                            $this->redirect(array('action'=>'index'));
                    } else {
                            $this->Session->setFlash(__('Se ha producido un error. Por favor intente nuevamente.', true));
                    }
            }
	}

	function edit($id = null) {
            if (!$id && empty($this->data)) {
                    $this->Session->setFlash(__('Invalid UnidadMedida', true));
                    $this->redirect(array('action'=>'index'));
            }
            if (!empty($this->data)) {
                    if ($this->UnidadMedida->save($this->data)) {
                            $this->Session->setFlash(__('La Unidad de Medida ha sigo guardad correctamente', true));
                            $this->redirect(array('action'=>'index'));
                    } else {
                            $this->Session->setFlash(__('Se ha producido un error. Por favor intente nuevamente.', true));
                    }
            }
            if (empty($this->data)) {
                    $this->data = $this->UnidadMedida->read(null, $id);
            }
	}

	/* function para eliminar*/
	function delete($id = null, $verbose = true){
		$unidadMedida['UnidadMedida']['activo']=0;
		if($this->UnidadMedida->save($unidadMedida)){
			if($verbose){
				$this->Session->setFlash(__('Se ha eliminado con Exito...',true));
				$this->redirect($this->referer());
			} else return true;
		}else{
			if($verbose){
				$this->Session->setFlash(__('No se ha eliminado...',true));
				$this->redirect($this->referer());
			} else return false;
		}
	}

	function process(){// procesa anulaciones y eliminaciones en bloque
            $this->autoRender = false;
            $op = isset($this->params['form']['cancel'])?'anular':'eliminar';
            $flag = true;
            $i = 0;
            foreach($this->data as $item){
                if ($item['id']!='0'){
                    if(isset($this->params['form']['cancel'])){ // anular
                        $flag = $this->cancel($item['UnidadMedida']['id'], false);
                    } else { //eliminar
                        $flag = $this->delete($item['UnidadMedida']['id'], false);
                    }
                    if (!$flag){
                        $data = $this->UnidadMedida->read(null, $item['id']);
                        $this->Session->setFlash(__("Se ha producido un error al $op la Unidad de Medida #".$data['UnidadMedida']['codigo'], true));
                        break;
                    }
                }
                $i++;
            }
            if ($flag && $i++){
                $this->Session->setFlash(__("El proceso de $op Unidades de Medida se ha realizado con exito.", true));
            }
            $this->redirect(array('action'=>'index'));
    }
	
	function buscar($q = null){
		if(!empty($this->data['UnidadMedida']['q'])){
			$q = $this->data['UnidadMedida']['q'];
		} elseif (!empty($this->params['url']['q'])){
			$q = $this->params['url']['q'];
		} elseif (!empty($this->params['form']['q'])){
			$q = $this->params['form']['q'];
		}
		
		if(empty($q)){
			$result = array('Error'=>'No se establecieron los par�metros adecuadamente');
		} else {
			$conditions = array(
				'UnidadMedida.activo =' => 1,
				'OR'=>array(
					'UnidadMedida.simbolo' => strtoupper($q),
					'UnidadMedida.codigo LIKE' => strtoupper($q).'%',					
					//'UnidadMedida.descripcion LIKE' => '%'.strtoupper($q).'%'
					)
			);
			$fields = array(
				'UnidadMedida.id',				
				'UnidadMedida.codigo',	
				'UnidadMedida.descripcion',				
				'UnidadMedida.simbolo'				
			);
			$this->UnidadMedida->Behaviors->attach('Containable');
			$result = $this->UnidadMedida->find('all', array(
				'conditions' => $conditions,
				'fields' => $fields,
				//'order'=>array('UnidadMedida.simbolo ASC')
			));
		}
		
		//definiendo valores en caso q sea una petici�n para autocompletado
		if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
			$res = array();
			foreach($result as $value){
				$res[] = array('value'=>$value['UnidadMedida']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'.$value['UnidadMedida']['simbolo'].'</span><div style="float:right;font-size:.8em" title="'.$value['UnidadMedida']['descripcion'].'">'. $this->neat_trim($value['UnidadMedida']['descripcion'], 24) .'</div>');
			}
			$result = $res;
		}
		//var_dump($result );
		if ($this->RequestHandler->isAjax()){
			$this->_ajaxify($result);
		} else {
			return $result;
		}
	}

}
?>